#include <iostream>

// static的特点 :
// 1、由类进行初始化
// 2、不和具体对象对应
// 3、被所有对象共享
class Test
{
public:
    Test()
    {
        a++;
    }
    ~Test()
    {
        a--;
    }

    //静态成员函数 : 
    // 1、不由某个对象对应
    // 2、没有this指针
    // 3、不能访问普通成员变量
    // 4、能访问静态成员变量

    static void func()
    {
        a++;
        // b++;  
    }
public:
    static int a;
    int b;
};

int Test::a = 0; // 静态成员变量在类外单独初始化

int main()
{
    //访问静态变量不需要借助任何对象
    // std::cout << Test::a << std::endl;

    Test *t = new Test;
    Test *t1 = new Test;

    delete t;

    Test::func();

    //是否存在内存泄漏
    std::cout << Test::a << std::endl;
    return 0;
}
